Dokument aus Datenbank anzeigen lassen

Dokument aus Datenbank anzeigen lassen

am 26.09.2004 11:15:28 von Alexander Fischer

Hallo,
ich bastle schon seit Tagen an der Möglichkeit, auf Mausklick hin die aus
einer Datenbank selektierten Dateien (Word-Dokumente) anzeigen zu lassen.
Alle selektierten Dateien erscheinen in einer Tabelle, der Hyperlink
existiert auch, nur versucht der Browser auf Klick hin die php-Seite, in der
die Tabelle mit den Hyperlinks steht, zu öffnen (also die Seite, die gerade
angezeigt wird).

Der Code der angezeigten Tabelle:

$abfrage=mysql_query("select
beschreibung,bin_data,filename,filesize,filetype from dokumente where
user='$user'");
while ($result=mysql_fetch_assoc($abfrage))
{
?>


"> $result[filename];?>
Byte";?>



Der Code, der das Dokument anzeigen soll:

function doku_show($user,$filename)
{include("config.php");
header('Content-type: application/msword');
header('Content-disposition: attachment; filename='.$result[filename]);
}
?>

Außerdem interessiert mich, warum (mit phpMyAdmin) in der MySQL-Datenbank in
der Tabelle, die die Dokumente speichert, in der Spalte der Datei "[BLOB - 0
Bytes] nicht die Dateigröße angezeigt wird (wird aber in der Spalte
"filesize" richtig angegeben)?

Danke

Alex

Re: Dokument aus Datenbank anzeigen lassen

am 26.09.2004 11:31:07 von Ralf Haas

Du solltest mal überlegen, ob es überhaupt sinnvoll ist, die
Word-Dokumente in einer DB zu speichern.

Sinnvoller wäre es unter Umständen, die Word-Dateien in einem separaten
Verzeichnis zu speichern und in die Datenbank nur die Informationen zu
den Dokumenten (z.B. Titel, Kurzinfo, Kategorie, etc) einzutragen.

Dann wäre es wahrscheinlich auch unproblematisch, die Dateien anzeigen
zu lassen.

Ralf Haas

Re: Dokument aus Datenbank anzeigen lassen

am 26.09.2004 13:15:40 von Sven Drieling

Alexander Fischer wrote:

Hallo Alexander,

> ich bastle schon seit Tagen an der Möglichkeit, auf Mausklick hin d=
ie aus
> einer Datenbank selektierten Dateien (Word-Dokumente) anzeigen zu las=
sen.
> nur versucht der Browser auf Klick hin die php-Seite, in der
> die Tabelle mit den Hyperlinks steht, zu öffnen (also die Seite, di=
e
> gerade angezeigt wird).

Wird der Parameter 'doku_show=3Dyes' denn ausgewertet, so dass nur die=

doku_show()-Funktion aufgerufen und nicht vorher noch die
Tabelle ausgegeben wird?

Geht es, wenn Du versuchst dem Browser eine .doc-Endung vorzutäusche=
n, in
dem Du 'foo=3Dbar.doc' an die anklickbaren URLs anhängst?

"$_SERVER[PHP_SELF]?doku_show=3Dyes&foo=3Dbar.doc";?>"> ^^^^^^^^^^^^^^^^^

> ;?>
^^^ ^^^
Mit error_reporting(E_ALL) wirst Du Notice-Fehlermelungen erhalten, we=
il
die Anführungszeichen fehlen.=20

print $result['beschreibung'];
^^^ ^^^

Es sei denn, 'beschreibung' etc. sind als Konstanten definiert.

> > function doku_show($user,$filename)
> {include("config.php");
> header('Content-type: application/msword');
> header('Content-disposition: attachment; filename=3D'.$result[filenam=
e]);
> }
> ?>

Möchte der Browser -Type und -Disposition groß geschrieben haben?
=20
Den Dateinamen würde ich in Anführungszeichen setzen

header('Content-Disposition: attachment; filename=3D"' .=20
$result['filename'] . '"');

Ist $result innerhalb der Funktion 'doku_show()' mit 'global'
als globale Variable gekennzeichnet?

Wo wird der Inhalt des Dokuments ausgegeben? Fehlt in obiger Funktion =
ein

echo $result['bin_data'];

?


tschuess
[|8:)

Re: Dokument aus Datenbank anzeigen lassen

am 26.09.2004 15:54:23 von Alexander Fischer

Danke erstmal für die vielen Tips, ich arbeite sie alle ab und melde mich
wieder.
Alex

"Sven Drieling" schrieb im Newsbeitrag
news:20040926111743.156E.0.NOFFLE@news1.sven-drieling.de...
Alexander Fischer wrote:

Hallo Alexander,

> ich bastle schon seit Tagen an der Möglichkeit, auf Mausklick hin die aus
> einer Datenbank selektierten Dateien (Word-Dokumente) anzeigen zu lassen.
> nur versucht der Browser auf Klick hin die php-Seite, in der
> die Tabelle mit den Hyperlinks steht, zu öffnen (also die Seite, die
> gerade angezeigt wird).

Wird der Parameter 'doku_show=yes' denn ausgewertet, so dass nur die
doku_show()-Funktion aufgerufen und nicht vorher noch die
Tabelle ausgegeben wird?

Geht es, wenn Du versuchst dem Browser eine .doc-Endung vorzutäuschen, in
dem Du 'foo=bar.doc' an die anklickbaren URLs anhängst?

"$_SERVER[PHP_SELF]?doku_show=yes&foo=bar.doc";?>"> ^^^^^^^^^^^^^^^^^

>
^^^ ^^^
Mit error_reporting(E_ALL) wirst Du Notice-Fehlermelungen erhalten, weil
die Anführungszeichen fehlen.

print $result['beschreibung'];
^^^ ^^^

Es sei denn, 'beschreibung' etc. sind als Konstanten definiert.

> > function doku_show($user,$filename)
> {include("config.php");
> header('Content-type: application/msword');
> header('Content-disposition: attachment; filename='.$result[filename]);
> }
> ?>

Möchte der Browser -Type und -Disposition groß geschrieben haben?

Den Dateinamen würde ich in Anführungszeichen setzen

header('Content-Disposition: attachment; filename="' .
$result['filename'] . '"');

Ist $result innerhalb der Funktion 'doku_show()' mit 'global'
als globale Variable gekennzeichnet?

Wo wird der Inhalt des Dokuments ausgegeben? Fehlt in obiger Funktion ein

echo $result['bin_data'];

?


tschuess
[|8:)

Re: Dokument aus Datenbank anzeigen lassen

am 26.09.2004 21:33:53 von Alexander Fischer

Nein, ich komme nicht weiter,

Groß-/Kleinschreibung der Header-Erweiterungen typ/Disp.... ohne Effekt
variable $result mit "global $result" übergeben, ohne Effekt (hatte ich
bisher nicht)
Dateinamen in Anführungszeichen: der Browser streikt:
....filename='."$result['filename']") funktioniert nicht
echo $result['bin_data'] ohne effekt (hatte ich bisher nicht, ich dachte,
die Datei wird über die header-funktionen geöffnet?)

ich habe festgestellt, das der Wert von $result['filename'] der function
doku_show nicht übergeben wird.

hast du noch eine Idee??

Danke
Alex